#include<stdio.h>

//将整型变量x中 第p个bit位开始的n个bit 取反，其他位保持不变 

void binary(int num)
{
	int t=num;
	int bit[32]={0};
	int i=0;
	while(t)
	{
		bit[i]=t%2;
		t/=2;
		i++;
	}
	printf("数字%d的二进制是:",num);
	for(int j=32-1;j>=0;j--)
	{
		printf("%d",bit[j]);
	}
	printf("\n");
}

void fun(int x,int p,int n)
{
	x = (((1<<n)-1)<<p) ^ x ;
	binary(x);
}

int main()
{
	int p,n,num;
	printf("请输入一个数字：\n");
	scanf("%d",&num);
	binary(num);
	printf("请输入要将%d二进制位取反的范围:",num);
	scanf("%d%d",&p,&n);
	fun(num,p,n);
	
	return 0;
}
